From: Marco Trevisan (TreviƱo) Date: Fri, 12 Jul 2019 11:53:33 +0000 (+0200) Subject: workspace: Remove Long-press later with the actor X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~811^2^2~164 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e53443daf903fe3434b0471582e40f0fbd369a25;p=gnome-shell.git workspace: Remove Long-press later with the actor Ensure that the long-press later is removed with the actor, otherwise it will try to use invalidated data. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700 --- diff --git a/js/ui/workspace.js b/js/ui/workspace.js index 95369997a..f0951a63d 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -354,6 +354,11 @@ var WindowClone = GObject.registerClass({ this.metaWindow._delegate = null; this._delegate = null; + if (this._longPressLater) { + Meta.later_remove(this._longPressLater); + delete this._longPressLater; + } + if (this.inDrag) { this.emit('drag-end'); this.inDrag = false; @@ -388,9 +393,13 @@ var WindowClone = GObject.registerClass({ let event = Clutter.get_current_event(); this._dragTouchSequence = event.get_event_sequence(); + if (this._longPressLater) + return true; + // A click cancels a long-press before any click handler is // run - make sure to not start a drag in that case - Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { + this._longPressLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { + delete this._longPressLater; if (this._selected) return; let [x, y] = action.get_coords();